home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMIBEST4.ADF / AmigaBasicStuff / Amortize (.txt) < prev    next >
AmigaBASIC Source Code  |  1987-07-22  |  4KB  |  193 lines

  1. ' Amortization Scheduler
  2.  
  3. ' by David Czaya
  4.  
  5. ' Version 1  June 1986
  6. ' This program has been placed in the public domain by
  7. ' its author. Any non-commercial, not-for-profit use is a-ok.
  8. ' Modifications are permitted but please leave the first two
  9. ' lines alone, please.
  10.  
  11.  
  12. ' Dependents
  13.     ClR$ = CHR$(12)
  14.     PrinterPort$ = "PAR:"
  15.     SOP$ = CHR$(27)+CHR$(78)+CHR$(16)
  16.     ESOP$ = CHR$(27)+CHR$(79)
  17.     Scrn = 2
  18.     Prin = 1
  19.     
  20. ' MakeAMenu  
  21.     GOSUB Menus
  22.     
  23. ' Intro
  24.     WINDOW 2,"Amortization Scheduler",(0,0)-(631,186),8
  25.     PRINT ClR$
  26.     PRINT  SPC(24);"Amortization Scheduler"
  27.     PRINT :PRINT SPC(30);"by -DAVE-"
  28.     FOR x = 1 TO 5000:NEXT      
  29.  
  30. GetData:
  31.     PRINT ClR$:PRINT " Name   |";:LOCATE 2,9
  32.     GOSUB Waiting
  33.     LINE INPUT;Nam$
  34.     Nam$ = FirstLetter$+Nam$
  35.     PRINT ClR$:LOCATE 2,2:PRINT UCASE$(Nam$)
  36.   
  37.     INPUT " Principle   ", Principle
  38.     LOCATE 3,13:PRINT USING "$$#####,.##";Principle
  39.   
  40.     INPUT " Interest    ", Interest
  41.     LOCATE 4,1:PRINT STR$(Interest);"%  Annual Percentage Rate"
  42.   
  43.     INPUT " Term (yrs.) ", Term
  44.     LOCATE 5,1:PRINT STR$(Term);" year term     ";Term*12;" scheduled payments"
  45.   
  46.     PRINT:PRINT " Is this information correct? ";
  47.       a$ = UCASE$(INPUT$(1))        
  48.           IF LEFT$(a$,1) <> "Y" THEN GetData
  49.       
  50. Conversions:
  51.     CompInt = (Interest/100)/12
  52.     CompTerm = Term * 12
  53.     PBal = Principle
  54.     Nlength = LEN(Nam$)
  55.   
  56. ' Formula
  57.     PMT = PBal / ((1-(1+CompInt)^-CompTerm)/(CompInt))
  58.     
  59.     PRINT ClR$
  60.  
  61. OutData:
  62.     IF SaveFile = 1 THEN
  63.       OPEN FileName$+".SCH" FOR OUTPUT AS 1
  64.       GOTO header
  65.     END IF    
  66.  
  67.     IF TogglePrinter = 1 THEN
  68.       OPEN PrinterPort$ FOR OUTPUT AS 1
  69.       PRINT #1,SOP$;
  70.     ELSE
  71.       OPEN "scrn:" FOR OUTPUT AS 1      
  72.     END IF
  73.     
  74. header:
  75.     PRINT #1,UCASE$(Nam$);SPC(50-Nlength);
  76.     PRINT #1,USING"Principle $$#####,.##";Principle
  77.       FOR x = 1 TO Nlength
  78.         PRINT #1,"*";
  79.       NEXT
  80.  
  81.     PRINT #1,SPC(50-Nlength);"Interest =";STR$(Interest);"% A.P.R."
  82.     PRINT #1,SPC(50);"Term = ";STR$(Term);" year";
  83.     
  84.     IF Term <> 1 THEN
  85.       PRINT #1,"s"
  86.     ELSE
  87.       PRINT #1,""
  88.     END IF
  89.         
  90.     PRINT #1,SPC(50);
  91.     PRINT #1,USING"Payment = $$#####,.##";PMT
  92.     PRINT #1,""
  93.     PRINT #1,"Pymt                                  ";
  94.     PRINT #1,"Present      Accrued        Accrued"
  95.     PRINT #1," No.    Principle      Interest       ";
  96.     PRINT #1,"Balance     Principle      Interest"
  97.     PRINT #1,""
  98.  
  99. ' CalcData
  100.   WHILE PMTNO < CompTerm
  101.   
  102.     NewInt = PBal * CompInt
  103.     PPrin = PMT - NewInt:IF PPrin > PBal THEN PPrin = PBal
  104.     PBal = PBal - PPrin
  105.     APrin = APrin + PPrin
  106.     AInt = AInt + NewInt
  107.     PMTNO = PMTNO + 1
  108.       
  109.     PRINT #1,USING "###   ";PMTNO;
  110.     PRINT #1,USING "$$#####,.##   ";PPrin;
  111.     PRINT #1,USING "$$#####,.##   ";NewInt;
  112.     PRINT #1,USING "$$#####,.##   ";PBal;
  113.     PRINT #1,USING "$$#####,.##   ";APrin;
  114.     PRINT #1,USING "$$#####,.##";AInt
  115.  
  116.   WEND
  117.  
  118.     PRINT #1,""
  119.     PRINT #1,USING "Initial Payment =$$#####,.##";PMT
  120.     PRINT #1,USING "Final Payment =  $$#####,.##";PPrin+NewInt
  121.     
  122.     IF TogglePrinter = 1 AND SaveFile = 0 THEN PRINT #1,ClR$+ESOP$
  123.     
  124.     IF SaveFile = 1 THEN
  125.       CLOSE #1
  126.       SaveFile = 0 
  127.       PMTNO = 0
  128.       KILL FileName$+".SCH.INFO"
  129.       GOTO Conversions
  130.     END IF
  131.  
  132. Four:
  133. Bye:        
  134.   CLOSE #1
  135.   PRINT:PRINT 
  136.   PRINT "Press any key to end... ";
  137.   a$ = INPUT$(1)
  138.   WINDOW CLOSE 2
  139.   MENU RESET
  140.   
  141. END
  142.  
  143. Menus:
  144.   MENU 2,0,0,""
  145.   MENU 3,0,0,""
  146.   MENU 4,0,0,""
  147.   
  148.   MENU 1,0,1,"    Output  "
  149.   MENU 1,1,Scrn,"    Screen  "
  150.   MENU 1,2,Prin,"   Printer  "
  151.   MENU 1,3,1,"      Save  "
  152.   MENU 1,4,1,"      Quit  "
  153.   
  154.   MENU ON
  155.   ON MENU GOSUB Trap
  156. RETURN
  157.  
  158. Trap:
  159.   MenuItem = MENU(1)
  160.   ON MenuItem GOSUB One,Two,Three,Four
  161.   GOSUB Menus
  162. RETURN
  163.  
  164. One:
  165. Two:
  166.   IF MenuItem <> Scrn THEN RETURN
  167.   SWAP Scrn,Prin
  168.   TogglePrinter = MenuItem -1
  169. RETURN
  170.  
  171. Three:
  172.   WINDOW 3,"",(150,15)-(500,60),26
  173.   PRINT SPC(12)+"Enter path/filename"
  174.   LOCATE 5,13:PRINT "[RETURN] to Cancel";
  175.   LOCATE 3,4:LINE INPUT;FileName$
  176.   WINDOW CLOSE 3
  177.    
  178.   IF FileName$ = "" THEN
  179.      RETURN
  180.   ELSE
  181.      SaveFile = 1
  182.   END IF
  183.     
  184. RETURN
  185.  
  186. Waiting:
  187.   FirstLetter$ = INKEY$
  188.     IF FirstLetter$ = "" THEN Waiting
  189.     IF FirstLetter$ = CHR$(13) THEN GOTO GetData
  190.   PRINT FirstLetter$;
  191. RETURN
  192.  
  193.